package zw_601_700.zw_682_棒球比赛;


/**
 * 整数 x - 表示本回合新获得分数 x
 * "+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
 * "D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
 * "C" - 表示前一次得分无效，将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。
 * ["5","-2","4","C","D","9","+","+"]
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/baseball-game
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
class Solution {

    public static void main(String[] args) {
        String[] ops = {"5","-2","4","C","D","9","+","+"};
        int points = calPoints(ops);
        System.out.println(points);
    }

    public static int calPoints(String[] ops) {
        int[] nums = new int[1001];//数组，增加标记
        int index = 0;//循环到的位置
        for (int i = 0; i < ops.length; i++, index++) {
            if (ops[i].equals("+")) {
                nums[index] = nums[index - 1] + nums[index - 2];//叠加

            } else if (ops[i].equals("D")) {
                nums[index] = nums[index - 1] * 2;

            } else if (ops[i].equals("C")) {
                index = index - 2;//删除一个
            } else {
                nums[index] = Integer.parseInt(ops[i]);//记录数字"5"
            }
        }
        int sum = 0;
        for (int i = 0; i < index; i++) {
            sum += nums[i]; //叠加
        }
        return sum;//总和
    }
}
